import datetime
import hashlib
import os.path
import time


# 工具类
class Tools:

    # 保持截图的方法
    # driver是浏览器对象
    # error_type是错误类型字符串
    @classmethod
    def save_screenshot(cls, driver, error_type):
        pic_dir = './error_pics/'  # 图片保存的文件夹
        today_dir = datetime.datetime.now().strftime('%Y_%m_%d')  # 今天的日期
        dir_path = pic_dir + today_dir + '/'  # 今天的截屏保存路径
        if not os.path.isdir(dir_path):
            print('今天要保存的文件夹不存在')
            os.mkdir(dir_path)  # 创建一个文件夹
        # 通过当前时间生成一个文件名
        stime = datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
        # 文件完整路径名：图片所在文件夹/错误类型、日期时间.png
        f_name = f'{dir_path}{error_type}{stime}.png'
        # 截屏并保存
        driver.get_screenshot_as_file(f_name)

    @classmethod
    def contrast_md5(cls, p1, p2):
        """
        通过MD5值比较两个文件的方法
        :param p1: 第一个文件的路径
        :param p2: 第二个文件的路径
        :return: 相同返回Ture不同返回Flase
        """
        a = open(p1, "rb")
        a_cp = open(p2, 'rb')
        cmd51 = hashlib.md5(a.read()).hexdigest()  # 生成md5
        cmd52 = hashlib.md5(a_cp.read()).hexdigest()  # # 生成md5
        print('第一个文件的md5:', cmd51)
        print('第二个文件的md5:', cmd52)
        if cmd51 == cmd52:  # 对比两个文件的MD5
            return True
        else:
            return False

    @classmethod
    def judge(cls, address, name):
        """
        等待下载完成的方法，每秒检测一次
        :param address:地址
        :param name:文件
        :return:不返回东西
        """
        while True:
            pathlist = os.listdir(address)  # 获取sPaht下面所有的文件(包括目录)列表
            time.sleep(1)
            print(pathlist)
            if name in pathlist:
                print('找到了')
                break

    @classmethod
    def check(cls, address):
        """
        清空目录的方法
        :param address:目录的地址
        :return: 不返回任何东西
        """
        pathlist = os.listdir(address)  # 获取sPaht下面所有的文件(包括目录)列表
        os.chdir(address)  # 进入指定目录
        for i in pathlist:
            os.system(f"attrib -r {i}")
            os.remove(i)



if __name__ == '__main__':
    from selenium import webdriver
    dr = webdriver.Chrome()
    dr.get("https://www.baidu.com")
    Tools.save_screenshot(dr, 'cuowu')
